package javawdw.picture.api;

import javawdw.picture.core.Position;
import javawdw.picture.core.TextStyle;

public interface Picture {
	/**
	 * 获得图片宽度
	 * 
	 * @return 返回图片宽度
	 */
	public int getWidth();

	/**
	 * 获得图片高度
	 * 
	 * @return 返回图片高度
	 */
	public int getHeight();

	/**
	 * 在当前图片的指定位置添加另一张图片
	 * 
	 * @param picture
	 *            要添加的图片
	 * @param position
	 *            添加图片的位置
	 * @param transparency
	 *            透明度(0~1,1为不透明)
	 */
	public void draw(Picture picture, Position position, double transparency);

	/**
	 * 在当前图片的指定位置添加另一张图片
	 * 
	 * @param picture
	 *            要添加的图片
	 * @param position
	 *            添加图片的位置
	 */
	public void draw(Picture picture, Position position);

	/**
	 * 在当前图片的指定位置添加字符串
	 * 
	 * @param content
	 *            要添加文字的内容
	 * @param style
	 *            字体信息
	 * @param position
	 *            要添加文字的位置
	 * @param transparency
	 *            透明度(0~1,1为不透明)
	 */
	public void draw(String content, TextStyle style, Position position,
			double transparency);

	/**
	 * 在当前图片的指定位置添加字符串
	 * 
	 * @param content
	 *            要添加文字的内容
	 * @param style
	 *            字体信息
	 * @param position
	 *            要添加文字的位置
	 */
	public void draw(String content, TextStyle style, Position position);

	/**
	 * 根据给定横向、纵向比率缩放图片
	 * 
	 * @param ratioX
	 *            给定横向比率
	 * @param ratioY
	 *            给定纵向比率
	 */
	public void zoom(double ratioX, double ratioY);

	/**
	 * 根据开始坐标点、宽、高裁剪图片
	 * 
	 * @param startPosition
	 *            给定的开始坐标点
	 * @param newWidth
	 *            给定的宽度
	 * @param newHeight
	 *            给定的高度
	 */
	public void crop(Position startPosition, int newWidth, int newHeight);

	/**
	 * 根据角度和生成图片的宽度、高度以图片中心为原点旋转图片
	 * 
	 * @param degree
	 *            给定的角度
	 * @param newWidth
	 *            给定的宽度
	 * @param newHeight
	 *            给定的高度
	 */
	public void revolve(double degree, int newWidth, int newHeight);

	/**
	 * 复制图片
	 * 
	 * @return 复制得到的图片
	 */
	public Picture clone();
}